package com.zenithmind.task.service.base;

/**
 * 任务状态管理服务接口
 * 遵循接口隔离原则：专门处理任务状态相关操作
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface TaskStatusService {

    /**
     * 开始任务
     * 
     * @param taskId 任务ID
     * @param userId 操作者ID
     * @return 操作结果
     */
    Boolean startTask(String taskId, String userId);

    /**
     * 完成任务
     * 
     * @param taskId 任务ID
     * @param userId 操作者ID
     * @param actualHours 实际工时
     * @param completionNote 完成说明
     * @return 操作结果
     */
    Boolean completeTask(String taskId, String userId, Double actualHours, String completionNote);

    /**
     * 暂停任务
     * 
     * @param taskId 任务ID
     * @param userId 操作者ID
     * @param reason 暂停原因
     * @return 操作结果
     */
    Boolean pauseTask(String taskId, String userId, String reason);

    /**
     * 取消任务
     * 
     * @param taskId 任务ID
     * @param userId 操作者ID
     * @param reason 取消原因
     * @return 操作结果
     */
    Boolean cancelTask(String taskId, String userId, String reason);

    /**
     * 重新激活任务
     * 
     * @param taskId 任务ID
     * @param userId 操作者ID
     * @return 操作结果
     */
    Boolean reactivateTask(String taskId, String userId);

    /**
     * 更新任务进度
     * 
     * @param taskId 任务ID
     * @param progress 进度百分比
     * @param userId 操作者ID
     * @return 操作结果
     */
    Boolean updateProgress(String taskId, Integer progress, String userId);
}
